package middlewares

import "github.com/kataras/iris/v12"

// CorsHandler 这个是一个拦截中间件，拦截了OPTIONS请求。
// cors跨域处理options请求
//   options叫做预检请求，就是查看是否可以或者允许跨域请求。
//   出于安全原因，浏览器限制从脚本内发起的跨源HTTP请求。当一个资源从与该资源本身所在的服务器不同的域或端口请求一个资源时，资源会发起一个跨域 HTTP 请求。
func CorsHandler(ctx iris.Context) {
    ctx.Header("Access-Control-Allow-Origin", "*")
    if ctx.Request().Method == "OPTIONS" {
        ctx.Header("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,PATCH,OPTIONS")
        ctx.Header("Access-Control-Allow-Headers", "Content-Type, Api, Accept, Authorization, Version, Token")
        ctx.StatusCode(204)
        return
    }
    ctx.Next()
}
